class Solution {
    private:
   vector<int> visited;
   int size_of_arr;
    int res=0;
public:
//枚举所有可能出现的情况
//使用回溯的方式实现
    //n代表下标，len代表当前长度
    void def(int n,int len,vector<vector<int>>& req)
    {
        if(n==size_of_arr)
        {
            for(int i=0;i<visited.size();i++)
            {
                if(visited[i]!=0)
                return;
            }
            res=res>len?res:len;
            return;
        }

        //跳过当前的请求
        def(n+1,len,req);
        //选择当前的请求
        visited[req[n][0]]--;
        visited[req[n][1]]++;
        def(n+1,len+1,req);

        //消除对下一次的影响
        visited[req[n][0]]++;
        visited[req[n][1]]--;
    }
    int maximumRequests(int n, vector<vector<int>>& requests) {
    size_of_arr=requests.size();
    visited.resize(n);
    def(0,0,requests);
    return res;

    }
};
